package ricky.animate
{
	import flash.display.Bitmap;
	import flash.display.Sprite;
	import flash.events.Event;
	
	import ricky.Interface.IDispose;
	import ricky.Interface.IAnimate;
	import ricky.Interface.IAct;
	import ricky.Interface.IFrameManager;
	
	import ricky.utils.FrameManager;

	/**
	 * 动画对像基类
  	 * 2011.2.15
	 */
	public class Animate extends Bitmap implements IDispose,IAnimate,IAct
	{
		
		public function Animate(frameManger:IFrameManager)
		{
			if(!frameManger)
				this._frameManager=FrameManager.inst;
			else
				this._frameManager=frameManger;
		}

		/**
		 * 索引位置
		 */
		public function get index():int
		{
			return _index;
		}

		/**
		 * @private
		 */
		public function set index(value:int):void
		{
			_index = value;
		}

		/**
		 * 当前帧
		 */
		public function get currentFrame():int
		{
			return _currentFrame;
		}

		/**
		 * @private
		 */
		public function set currentFrame(value:int):void
		{
			_currentFrame = value;
		}

		/**
		 * 更新图片资源，相当于播放动画
		 * 用于子类重写
		 * dt为时间轴时间轴
		 */
		public function action(ds:Number):void
		{
			return;
		}

		/**
		 * 播放动画
		 */
		public function playScene(par:*=null):void
		{
			if(isPlaying==false && _frameManager!=null)
			{
				_frameManager.add(this);
				isPlaying=true;
			}
		}

		/**
		 * 停止播放
		 */
		public function stop():void
		{
			isPlaying=false;
			_frameManager.remove(this);
		}
		
		/**
		 * 从指定帧开始播放 SWF 文件。 MovieClip 
		 */
		public function gotoAndPlay(frame:Object, scene:String = null):void 
		{
			
		}
		
		/**
		 * 将播放头移到影片剪辑的指定帧并停在那里。  
		 */
		public function gotoAndStop(frame:Object, scene:String = null):void 
		{
			
		}
		
		public function dispose():void
		{
			if(_frameManager!=null)
				stop();
			_isDisposed=true;
			_frameManager=null;
			currentFrame=NaN;
			_playTimes=NaN;
		}

		//********************
		// 属性成员 
		//*********************
		/**
		 * 是否可用
		 */
		public function get enabled():Boolean
		{
			return _enabled;
		}

		public function set enabled(value:Boolean):void
		{
			_enabled = value;
		}
		
		/**
		 * 是否在播放
		 */
		public var isPlaying:Boolean=false;//是否播放中
		
		/**
		 * 当前场景,当前播放的行动动画
		 */
		public function get currScene():AnimScene
		{
			return null;
		}

		/**
		 * 播放次数
		 */
		public function get playTimes():uint
		{
			return _playTimes;
		}

		public function set playTimes(value:uint):void
		{
			_playTimes = value;
		}

		/**
		 * 上一贞
		 */
		public function get lastFrame():int
		{
			return _lastFrame;
		}

		public function set lastFrame(value:int):void
		{
			_lastFrame = value;
		}

		
		protected var _currentFrame:int=0; 
		protected var _playTimes:uint=0;
		//protected
		protected var _frameManager:IFrameManager;//帧管理器
		protected var _enabled : Boolean;//是否可用
 
		protected var _index:int=NaN;
		protected var _lastFrame:int=-1;
		protected var _isDisposed:Boolean=false;
		/**
		 * 全局播放控制
		 */
		public static var isRunning:Boolean=true;
	}
}